﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EstoqueUnifeiADO.Dados;
using System.Data;

namespace EstoqueUnifeiADO.Controles
{
    public partial class ctrlEntraMercaFapep : System.Web.UI.UserControl
    {
        public event EventHandler AfterSuccess;


        public void ClearAll()
        {
            Session.Remove("dtItem");
            Session.Remove("dtEntraMerca");
            Wizard1.ActiveStepIndex = 0;
            ddlFornecedor.SelectedIndex = ddlFornecedor.Items.IndexOf(ddlFornecedor.Items.FindByValue(string.Empty));
            ddlProduto.SelectedIndex = ddlProduto.Items.IndexOf(ddlProduto.Items.FindByValue(string.Empty));
           
            NUMERONOTALabel.Text = string.Empty;
         
            DATAENTRAMERCALabel.Text = string.Empty;

            ClearEntradaValores();
        }
        protected void AddError(String Erro)
        {
            this.Page.Validators.Add(new CustomValidator()
            {
                IsValid = false,
                ErrorMessage = Erro,
                Display = ValidatorDisplay.Dynamic,
                ValidationGroup = this.GrupoDeValidacao

            });
        }
        protected string GrupoDeValidacao
        {
            get { return "Group" + this.ClientID; }

        }
        protected void Page_Load(object sender, EventArgs e)
        {
            vsctrl.ValidationGroup = GrupoDeValidacao;
        }

        protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
        {
            if (e.CurrentStepIndex == 1)
            {
                try
                {
                    if (Session["dtEntraMerca"] != null && Session["dtItem"] != null)
                    {
                        if ((Session["dtItem"] as dsClientEntraMerca.EntraMercaItemDataTable).Count < 1)
                        {
                            throw new Exception("Você deve inserir itens antes");
                        }
                        else
                        {
                            new EntradaMercadoriaController(Session["dtEntramerca"] as dsClientEntraMerca.EntraMercaDataTable,
                                Session["dtItem"] as dsClientEntraMerca.EntraMercaItemDataTable).ExecutarEntradaMercadorias("Administrador");
                            if (AfterSuccess != null)
                                AfterSuccess(sender, EventArgs.Empty);
                            ClearAll();
                        }
                    }
                    else if (Session["dtItem"] == null) 
                    {
                        throw new Exception("Você deve inserir itens antes");
                    }

                }
                catch (Exception ex)
                {
                    AddError("Ocorreu o seguinte erro ao tentar inserir a mercadoria: " + ex.Message);
                }

            }

        }

        protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
        {
            if (e.CurrentStepIndex == 0)
            {
                Session.Remove("dtEntraMerca");
                var dtEntraMerca = new dsClientEntraMerca.EntraMercaDataTable();
                var entraMerca = dtEntraMerca.NewEntraMercaRow();
                entraMerca.Fornecedor = ddlFornecedor.SelectedItem.Text;
                entraMerca.CodFornecedor = int.Parse(ddlFornecedor.SelectedValue);
                entraMerca.NumeroConfirmacao = tbNumeroConfirmacao.Text;
                entraMerca.Numeronota = NUMERONOTALabel.Text;
                entraMerca.Data = DateTime.Parse(DATAENTRAMERCALabel.Text);
                dtEntraMerca.AddEntraMercaRow(entraMerca);
                Session.Add("dtEntraMerca", dtEntraMerca);

                if (Session["dtEntraMerca"] == null)
                    Wizard1.ActiveStepIndex = 0;
                else
                {
                    FormView1.DataSource = Session["dtEntraMerca"];
                    FormView1.DataBind();

                }
            }


        }

        protected void FormView1_PreRender(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {

            dsClientEntraMerca.EntraMercaItemDataTable dtItem = null;
            if (Session["dtItem"] != null)
                dtItem = (dsClientEntraMerca.EntraMercaItemDataTable)Session["dtItem"];
            else
            {
                dtItem = new dsClientEntraMerca.EntraMercaItemDataTable();
                Session.Add("dtItem", dtItem);

            }
            var item = dtItem.NewEntraMercaItemRow();
            item.codProduto = int.Parse(ddlProduto.SelectedValue);
            item.produto = ddlProduto.SelectedItem.Text;
            item.valor = decimal.Parse(tbValorUnit.Text);
            item.quantidade = decimal.Parse(tbQuantidade.Text);
            item.total = item.quantidade * item.valor;
            dtItem.AddEntraMercaItemRow(item);
            dtItem.ToList().ForEach(x => x.totnota = dtItem.Sum(y => y.total));
            GridView1.DataSource = null;
            GridView1.DataBind();
            GridView1.DataSource = dtItem;
            GridView1.DataBind();
            ClearEntradaValores();

        }
        private void ClearEntradaValores()
        {
            ddlProduto.SelectedIndex = ddlProduto.Items.IndexOf(ddlProduto.Items.FindByValue(string.Empty));
            tbQuantidade.Text = string.Empty;
            tbValorUnit.Text = string.Empty;
        }
        private decimal totNota;
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                totNota = ((dsClientEntraMerca.EntraMercaItemRow)(((DataRowView)(e.Row.DataItem)).Row)).totnota;
            }

            if (e.Row.RowType == DataControlRowType.Footer)
            {
                e.Row.Cells[4].Text = "Total: " + string.Format("{0:c}", this.totNota);//formatando para moeda
            }

        }

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Del")
            {
                if (Session["dtItem"] != null)
                {
                    var dtItem = (dsClientEntraMerca.EntraMercaItemDataTable)Session["dtItem"];
                    dtItem.RemoveEntraMercaItemRow(dtItem.FindByCod(Convert.ToInt32(e.CommandArgument)));
                    dtItem.ToList().ForEach(x => x.totnota = dtItem.Sum(y => y.total));
                    GridView1.DataSource = dtItem;
                    GridView1.DataBind();
                }
            }
        }
    }
}